﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;
using DevExpress.XtraReports.UI;
using Entities;

namespace QLTTTH
{
    public partial class UCNhanVien : DevExpress.XtraEditors.XtraUserControl
    {
        protected static Logger logger = LogManager.GetCurrentClassLogger();
        public UCNhanVien()
        {
            InitializeComponent();
        }

        private void Log(ActionResult aResult)
        {
            foreach (var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }

        private void UCNhanVien_Load(object sender, EventArgs e)
        {
            LoadDanhSachNhanVien();
            grvDanhSachNV.OptionsSelection.MultiSelect = true;
        }
        private void LoadDanhSachNhanVien()
        {
            //List<NguoiDung> dsanh = NhanVienManager._LayDuLieuNhanVien();
            //gdDanhSachNhanVien.DataSource = dsanh;
            var aResult = NhanVienManager._LayDuLieuNhanVien();
            if (aResult.Success)
                gdDanhSachNhanVien.DataSource = aResult.Result;
        }

        private void btnXemDanhSach_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem thông tin nhân viên");
            frmThongTinNhanVien _ThongTin = new frmThongTinNhanVien();
            _ThongTin.ThietLapThongTin(LayNguoiDung_Grv());
            _ThongTin.btnLuu.Enabled = false;
            _ThongTin.btnXoaTrang.Enabled = false;
            _ThongTin.ShowDialog();
        }

        #region --------- Lay thong tin du lieu tu gridview ----------------------------
        private NguoiDung LayNguoiDung_Grv()
        {
            NguoiDung nd = new NguoiDung();
            nd.ChucVu = grvDanhSachNV.GetFocusedRowCellValue("ChucVu").ToString();
            nd.DiaChi = grvDanhSachNV.GetFocusedRowCellValue("DiaChi").ToString();
            nd.HoTen = grvDanhSachNV.GetFocusedRowCellValue("HoTen").ToString();
            nd.Email = grvDanhSachNV.GetFocusedRowCellValue("Email").ToString();
            nd.MaNV = int.Parse(grvDanhSachNV.GetFocusedRowCellValue("MaNV").ToString());
            nd.MaNhomND = int.Parse(grvDanhSachNV.GetFocusedRowCellValue("MaNhomND").ToString());
            nd.Password = grvDanhSachNV.GetFocusedRowCellValue("Password").ToString();
            nd.SoDT = grvDanhSachNV.GetFocusedRowCellValue("SoDT").ToString();
            nd.TrangThai = grvDanhSachNV.GetFocusedRowCellValue("TrangThai").ToString();
            nd.Username = grvDanhSachNV.GetFocusedRowCellValue("Username").ToString();
            nd.NgaySinh = DateTime.Parse(grvDanhSachNV.GetFocusedRowCellValue("NgaySinh").ToString());
            nd.GioiTinh = grvDanhSachNV.GetFocusedRowCellValue("GioiTinh").ToString();
            return nd;
        }
        #endregion
        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            //grvDanhSachNV.OptionsSelection.MultiSelect = true;
            //for (int i = 0; i < grvDanhSachNV.RowCount; i++)
            //{
            //    if (Convert.ToBoolean(grvDanhSachNV.GetRowCellValue(i, "Chon")))
            //    {
            //        grvDanhSachNV.SelectRow(i);
            //    }
            //}



            //DialogResult dr = XtraMessageBox.Show("Bạn có muốn xóa nhân viên này", "Thông báo", MessageBoxButtons.YesNo);
            //if (dr == DialogResult.Yes)
            //{
            //    int maNV = int.Parse(grvDanhSachNV.GetFocusedRowCellValue("MaNV").ToString());
            //    if (NhanVienManager.XoaNhanVien(maNV))
            //    {
            //        grvDanhSachNV.DeleteSelectedRows();
            //        XtraMessageBox.Show("Xóa thành công nhân viên được chọn", "Thông báo");
            //    }
            //    else
            //        XtraMessageBox.Show("Xóa thất bại, vui lòng kiểm tra lại", "Thông báo");
            //}

            logger.Info("Chọn chức năng xóa nhân viên");

            if (XtraMessageBox.Show("Bạn có muốn xóa nhân viên này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maNV;

                for (int i = 0; i < grvDanhSachNV.RowCount; i++)
                {
                    if (grvDanhSachNV.IsRowSelected(i))
                    {
                        maNV = int.Parse(grvDanhSachNV.GetRowCellDisplayText(i, "MaNV").ToString());
                        var aResult = NhanVienManager.XoaNhanVien(maNV);
                        if (!aResult.Success)
                        {
                            XtraMessageBox.Show("Xóa nhân viên không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Log(aResult);
                            return;
                        }
                    }
                }

                grvDanhSachNV.DeleteSelectedRows();

                XtraMessageBox.Show("Xóa nhân viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            grvDanhSachNV.ShowFindPanel();
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật thông tin nhân viên");

            try
            {
                frmThongTinNhanVien frm = new frmThongTinNhanVien();
                frm.btnXoaTrang.Enabled = false;
                frm.ThietLapThongTin(LayNguoiDung_Grv());
                frm.sendData = new frmThongTinNhanVien.SendData(CapNhatNguoiDung);
                frm.ShowDialog();
            }
            catch
            {
            }
        }

        private void CapNhatNguoiDung(NguoiDung ngd)
        {
            var aReuslt = NhanVienManager.CapNhatNguoiDung(ngd);
            if (aReuslt.Success)
            {
                grvDanhSachNV.SetFocusedRowCellValue("HoTen", ngd.HoTen);
                grvDanhSachNV.SetFocusedRowCellValue("DiaChi", ngd.DiaChi);
                grvDanhSachNV.SetFocusedRowCellValue("Username", ngd.Username);
                grvDanhSachNV.SetFocusedRowCellValue("TrangThai", ngd.TrangThai);
                grvDanhSachNV.SetFocusedRowCellValue("SoDT", ngd.SoDT);
                grvDanhSachNV.SetFocusedRowCellValue("Password", ngd.Password);
                grvDanhSachNV.SetFocusedRowCellValue("NgaySinh", ngd.NgaySinh);
                grvDanhSachNV.SetFocusedRowCellValue("MaNhomND", ngd.MaNhomND);
                grvDanhSachNV.SetFocusedRowCellValue("GioiTinh", ngd.GioiTinh);
                grvDanhSachNV.SetFocusedRowCellValue("ChucVu", ngd.ChucVu);
                grvDanhSachNV.SetFocusedRowCellValue("Email", ngd.Email);
                XtraMessageBox.Show("Cập nhật thông tin nhân viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                Log(aReuslt);
                XtraMessageBox.Show("Cập nhật thông tin nhân viên lỗi", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng thêm  nhân viên");

            frmThongTinNhanVien frm = new frmThongTinNhanVien();
            //frm.ThietLapThongTin(LayNguoiDung_Grv());
            frm.sendData = new frmThongTinNhanVien.SendData(ThemNguoiDung);
            frm.ShowDialog();
        }
        private void ThemNguoiDung(NguoiDung ngd)
        {
            var aReuslt = NhanVienManager.ThemNguoiDung(ngd);
            if (aReuslt.Success)
            {
                LoadDanhSachNhanVien();
                XtraMessageBox.Show("Thêm nhân viên mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                Log(aReuslt);
                XtraMessageBox.Show("Thêm nhân viên mới không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnIn_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng in danh sách nhân viên");

            rptNhanVien rpt = new rptNhanVien();
            QLTTTHEntities content = new QLTTTHEntities();
            List<NguoiDung> ngdung = content.NguoiDungs.ToList();
            rpt.DataSource = ngdung;
            ReportPrintTool tool = new ReportPrintTool(rpt);
            tool.ShowPreview();
        }

        private void btnThietKe_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            rptNhanVien rpt = new rptNhanVien();
            ReportDesignTool tool = new ReportDesignTool(rpt);
            tool.ShowDesignerDialog();
        }
    }
}
